package com.example.businessmanage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.businessmanage.domain.dto.FosterUserRespDTO;
import com.example.businessmanage.domain.dto.LendApplyDTO;
import com.example.businessmanage.domain.dto.OwnerRetrieveDTO;
import com.example.businessmanage.domain.dto.SelectFosterDTO;

/**
 * 暂时外借业务接口（主人操作：申请外借、选择代养人、申请取回等）
 */
public interface LendService {

    /**
     * 发起外借申请（外借情况从0改为1-已申请外借）
     * @param lendApplyDTO 外借申请参数（含宠物ID）
     * @param ownerUserId 主人用户ID（从UserContext获取）
     * @return 申请结果（true-成功，false-失败）
     */
    Boolean applyLend(LendApplyDTO lendApplyDTO, Long ownerUserId);

    /**
     * 选择代养人（外借情况1或6时可用，改为2-已选择代养）
     * @param selectFosterDTO 选择代养人参数（宠物ID、代养人ID）
     * @param ownerUserId 主人用户ID（权限校验）
     * @return 选择结果
     */
    Boolean selectFoster(SelectFosterDTO selectFosterDTO, Long ownerUserId);

    /**
     * 申请取回宠物（根据当前状态改5或7）
     * @param ownerRetrieveDTO 取回申请参数（宠物ID、当前外借状态）
     * @param ownerUserId 主人用户ID（权限校验）
     * @return 取回申请结果
     */
    Boolean retrievePet(OwnerRetrieveDTO ownerRetrieveDTO, Long ownerUserId);

    /**
     * 分页查询宠物的待选择代养人列表
     * @param petId 宠物ID
     * @param ownerUserId 主人用户ID（权限校验）
     * @param pageNum 页码
     * @param pageSize 每页条数
     * @return 分页代养人信息列表（含信用分、联系方式）
     */
    IPage<FosterUserRespDTO> getToBeSelectedFoster(Long petId, Long ownerUserId, Integer pageNum, Integer pageSize);
}
